package aiP.A3.MPS.Interfaces;

import aiP.A3.AuftragKomponente.DataAccessLayer.Entity.Angebot;
import aiP.A3.AuftragKomponente.DataAccessLayer.Entity.Auftrag;
import aiP.A3.BuchhaltungKomponente.DataAccessLayer.Entity.Rechnung;
import aiP.A3.PersistenceService.iEntity;
import aiP.A3.VersandKomponente.DataAccessLayer.DTO.TransportauftragDTO;
import aiP.A3.VersandKomponente.DataAccessLayer.Entity.Transportauftrag;

import java.io.IOException;
import java.io.Serializable;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Set;

/**
 * Created with IntelliJ IDEA.
 * User: Hero
 * Date: 15.05.14
 * Time: 18:26
 * To change this template use File | Settings | File Templates.
 */
public interface IServerInstance extends Remote, Serializable{


    public void CreateAngebot(Set<Angebot> angebot) throws RemoteException;

    public void CreateAuftrag(Auftrag auftrag) throws RemoteException;

    public void CreateRechnung(Rechnung rechnung) throws RemoteException;

    public void CreateTransportauftrag(Transportauftrag transportauftrag) throws RemoteException;

    public Collection<iEntity> getAllBauteile() throws RemoteException, NotBoundException;

    public Collection<iEntity> getAllCustomer() throws RemoteException, NotBoundException;

    public Collection<iEntity> getAllAuftraege() throws RemoteException, NotBoundException;

    public Collection<iEntity> getAllAngebote() throws RemoteException, NotBoundException;

    public Collection<iEntity> getAllZahlungseingaenge() throws RemoteException, NotBoundException;

    public void getZahlungseingaengeFromQueue() throws IOException, InterruptedException;

    public Collection<iEntity> getAllRechnungen() throws RemoteException, NotBoundException;

    public Collection<iEntity> getAllTransportauftraege() throws RemoteException, NotBoundException;

    public void startEKG() throws RemoteException;

    public void stopEKG() throws RemoteException;

    public void setAlive(boolean alive) throws RemoteException, NotBoundException;

    public boolean isAlive() throws RemoteException, NotBoundException;

    public void createTransportauftrag(Transportauftrag auftrag) throws RemoteException, NotBoundException;

    public boolean sendToVersand(Transportauftrag transportauftrag) throws IOException, NotBoundException;
}
